import { defineConfig, loadEnv, type ConfigEnv } from "vite";
import { resolve } from "path";

import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";

// https://vitejs.dev/config/
export default defineConfig((mode: ConfigEnv) => {
  const env = loadEnv(mode.mode, process.cwd());
  return {
    /*
     文档：https://cn.vitejs.dev/config/server-options.html#server-proxy

     npm run dev 启动开发服务器，内部会运行打包后的项目

     server配置在本地开发服务器上追加配置
     proxy，在本地开发服务器上添加代理请求的功能
   */
    server: {
      open: true,
      // 代理数据
      proxy: {
        // 哪些请求需要代理，转发到目标服务器去
        // 代理请求前缀，去二次封装axios函数（request）中去看baseURL的值
        "/app-dev": {
          // target: "http://39.98.123.211:8510",
          target: "http://gmall-h5-api.atguigu.cn",
          changeOrigin: true,  //允许跨域
          // 请求地址重写
          // 是否重写，看接口文档请求地址是否需要前缀
          rewrite: (path) => path.replace(/^\/app-dev/, ""),
        },
      },
    },
    plugins: [vue(), vueJsx()],
    resolve: {
      // 配置路径别名
      alias: {
        "@": resolve(__dirname, "src"),
      },
      extensions: [".ts", ".vue", ".js", ".jsx", ".tsx"], // 导入时想要省略的扩展名列表。
    },
    css: {
      preprocessorOptions: {
        scss: {
          // 引入 var.scss 这样就可以在全局中使用 var.scss中预定义的变量了
          // 给导入的路径最后加上 ;
          additionalData: '@import "./src/styles/variables.scss";',
        },
      },
      postcss: {
        plugins: [
          {
            postcssPlugin: "internal:charset-removal",
            AtRule: {
              charset: (atRule) => {
                if (atRule.name === "charset") {
                  atRule.remove();
                }
              },
            },
          },
        ],
      },
    },
  };
});
